//
//  NSMutableArray+Extension.m
//  RuntimeDemo
//
//  Created by pxh on 16/3/7.
//  Copyright © 2016年 上海益学. All rights reserved.
//

#import "NSMutableArray+Extension.h"
#import <objc/runtime.h>
@implementation NSMutableArray (Extension)
/**
 *  该方法在类或者分类中第一次加载内存的时候自动调用
 */
+(void)load{
    //__NSArrayM是NSMutableArray的真正类型
    Method orginaMethod = class_getInstanceMethod(NSClassFromString(@"__NSArrayM"), @selector(addObject:));
    Method newMethod = class_getInstanceMethod(NSClassFromString(@"__NSArrayM"), @selector(gp_addObject:));
    //交换方法的实现
    method_exchangeImplementations(orginaMethod, newMethod);
}
-(void)gp_addObject:(id)object{
    //注意该方法的调用，因为方法已经实现了交换，如果这里调用addObject：方法就会出现死循环
    if (object != nil) {
        [self gp_addObject:object];
    }
}

@end
